char*p="xin";与int*ap=5;结构一样,后者为野指针,前者为什么不是。谢谢!
来源:百度知道 编辑:UC知道 时间:2024/05/31 00:28:17
C/C++语言中字符串的值就是字符串中第一个字符的地址,相当于一个常量指针,它指向确定的合法内存,用它对字符指针赋值当然是可以的,赋值后的字符指针变量也指向了字符串第一个字符的地址;对于第二个声明的整型指针只能用同类型的指针或0或NULL进行初始化,不能用除了0之外的任何整数来初始化,因为除了0以外的整数并不表示指针或地址,所有整数中0是唯一可以直接赋值给指针变量的整数,作用相当于NULL。
int *ap=5;
相当于int *ap; ap=(int*)0x00000005;
由于0x00000005这个内存单元并没有被程序明确分配,导致ap指向的空间所存储的内容不可预知,即ap成为所谓的“野指针”。
char *p="xin";
这是字符串赋值的特殊形式,相当于char p[] = { 'x', 'i', 'n', '\0' };
如上所述,"xin"被看作一个字符数组,其存储空间由系统负责分配,p为数组名,同时也是指向数组首元素的指针。因此p指向的空间是由系统分配的,它不是“野”指针。
char *p =new char[..]
char *p[]={"3697","2584"}
char *p= new char 与char *p = new char[1]有区别吗
在函数里char p[] = "hello world" 与 char *p = "Hello world" 造成的效果不一样,为什么?请高人告知!
char *p; p='a'不能编译,p="a";却正常运行,为什么?
char *p= "hello" ;strcpy(p,"hel");为什么编译的时候是错的??
char *p【】={“3697","2584"}是个一维数组还是而为数组?
C语言的 char s[]="Program",*p=s; 是什么意思?
设有“char s[]="Program",*p=s;”,则p[5]与s[5]各是什么意思?
请解释一下C语句"char a[10],??p;p=a=“china”"的含义.